Зачем нужен XML
Web — это удивительное место, где миллионы людей каждый день могут связываться друг с другом. Совершенно не важно, где они находятся — Web не знает физических границ. Несмотря на все чудеса, которые предлагает Web, его широкое распространение могло бы привести к хаосу, если бы не были установлены стандарты или правила взаимодействия в этой безбрежной сети. Именно из этой потребности в стандартизации развился сначала HTML, а затем и XML.
HTML изначально обеспечивал стандарт, позволивший легко создавать Web-страницы на базе одной платформы, размещенной на сервере, а просматривать — на различных платформах. HTML, форматы файлов изображений GIF, а затем JPEG создали возможность взаимного обмена документами и графической информацией, а также обеспечили функциональную совместимость между различными операционными системами, браузерами и компьютерами. Несмотря на всю его славу и простоту использования (как в мире разработки, так и в мире пользовательских интерфейсов), HTML хотя и необходим для отображения информации, но обладает, относительно недостаточными возможностями по представлению структурированных данных. Кроме того, в HTML почти отсутствует механизм удаленного управления данными. Все что обеспечивает HTML, это визуальный уровень, предоставляющий пользователю возможность доступа к тексту и изображениям, а также навигацию в одном направлении к другому документу, содержащему текст или изображения.
HTML не обеспечивает никаких стандартов на ту часть коммуникационного уровня Internet, которая занимается визуальным представлением информации. Предположим, вы хотите найти сайт. Поскольку стандартов на интеллектуальный поиск информации в настоящее время нет, то вы будете рады любой технологии, предложенной разработчиком сайта. Также нет стандарта для обмена данными. Вы можете использовать протокол передачи файлов (File Transfer Protocol, FTP) для пересылки данных. Но поступая так, вы не только выходите за пределы владений Web, но и ограничиваетесь лишь единственным направлением, в котором будет осуществлена пересылка данных. Настоящий обмен данных должен быть двухсторонним, позволяя осуществлять пересылку в Web. Такие продукты, как NetMeeting или Virtual Private Network фирмы Microsoft могут использовать Internet для обмена данными, но при этом в них применяются собственные, частные протоколы и методы обмена данными.
Другая грустная реальность HTML и Web заключается в малых возможностях персонализации. Механизм cookies в HTTP обеспечивает некоторый, хотя и ограниченный, уровень персонализации при просмотре сайта посетителем. Такие сайты Microsoft, как Investor или Expedia, делают в этом смысле шаг вперед, предоставляя возможность обмена данными между пользовательским персональным компьютером и сайтом. Например, сайт Investor обменивается данными с популярной программой персонального финансового управления Quiken для записи, отслеживания и отображения информации портфеля (portfolio information), но он не выполняет эти действия стандартными методами. Посетитель должен просматривать информацию при помощи Internet Explorer, работающий под управлением Windows, а это означает, что протоколы, программы и методы шифрования привязаны к определенной операционной системе и браузеру.
Несмотря на присущие им ограничения такие системы ярко демонстрируют потенциальные возможности Internet, в частности в том, как можно обеспечить в Web персонализацию и обмен между локальной и удаленной системами. Однако, для того чтобы эти возможности охватили сообщество разработчиков Internet, необходимо продвинуться дальше простого информационного доступа и отображения, предлагаемого современным стандартом HTML. Вместо этого Microsoft следует разработать такой стандарт представления информации, чтобы программное обеспечение эффективнее осуществляло поиск, перемещение, отображение данных.
Если вы уже работали в HTML, то знаете, что он не обеспечивает перечисленные возможности, а, главным образом, описывает, как должна выглядеть Web-страница, а не то, как должны быть представлены данные. Изучив ограничения HTML, вы поймете, что в буквальном смысле невозможно с помощью одного лишь HTML обеспечить стандартный способ обмена для некоторых типов совместно используемых данных.
Например, в страховых компаниях это следующая информация о клиентах:
Вы уже встречались с чем-то подобным в Web и, вероятно, думаете: "почему это HTML не может управлять обменом такого рода данных?" Да, обмен такими данными происходит, однако не HTML управляет всем этим. Он лишь отображает результаты поиска или формы, которые должны отсылаться удаленному скрипту стандартного интерфейса шлюза (Common Gateway Interface, CGI) или базе данных. На некоторых сайтах для интерфейса с базами данных Access, вероятно, используют Cold Fusion, на других, — возможно, Perl. Но главное, что нет единого стандарта, и HTML сам по себе не в силах выполнить ни одного из перечисленных пунктов.
Web нуждается в языке, подобном HTML, который бы обеспечивал стандартный способ обмена данными. Этот язык должен быть достаточно гибким, чтобы пользователи могли создавать, собственные описания документов, независимо от того, отправляется ли информация об электронных платежах, или же стандартные поисковые запросы. XML является самым последним созданным языком разметки в Web, предназначенным для обмена данными. Этот новый язык разметки основан на спецификации, намеченной консорциумом W3C — организацией стандартов Web, выполнение которой реализуют и Microsoft и Netscape. Стандарт XML был создан на основе обобщения предложений Microsoft, ArborText, Netscape и других.
XML начал вызывать огромный интерес и поддержку с того момента, как о нем было впервые заявлено в 1996 году. Он обеспечивает стандартный способ кодирования содержания, обеспечивая гибкий способ создания структур данных. В XML для разметки содержания на основе правил, составляемых разработчиком документа, используются теги. Этот набор правил называется описанием типа документа (Document Type Definition, DTD), и он позволяет разработчикам, применяющим XML, размечать различные документы. Например:
Сейчас документы всех этих типов можно создавать при помощи XML, для отображения содержания применяя HTML и Dynamic HTML (DHTML). XML также позволяет переназначать, переопределять и отображать содержание из одного источника при помощи других механизмов отображения. Например, хранить единую базу данных на сервере и отображать выделенные данные на нескольких разных устройствах.
Вот реальный, хотя и немного футуристический пример. Представьте, что вы владелец ресторана и меню хранится в базе данных. У вас есть специальные устройства для отображения меню, этакие маленькие, умещающиеся на ладони устройства, которыми вы снабдили всех своих клиентов. У официантов есть устройства такого же типа для приема заказов. Заказы передаются на кухонный приемный модуль, который отображает заказ. Когда повар готовит мясо, он вычеркивает его из списка специальным пером.
Ресторан обслуживает тех, кто берет еду в дорогу, а также тех, кто делает заказы с доставкой. Они получают информацию о самых дешевых предложениях и остальной части меню на сайте ресторана. Некоторые ваши клиенты любят подписываться на канал Daily Specials, установленный при помощи инструмента Channels в Internet Explorer, а это значит, что ваша база с данными меню будет очень интенсивно использоваться. Эта база данных служит также для управления запасами. Когда кто-то заказал мясо, и повар вычеркнул исполненный заказ, поскольку блюдо приготовлено и оставлено, тотчас же будут откорректированы данные по запасам. Применение дополнительных инструментов автоматизации позволит автоматически формировать заказ поставщикам, когда запасы начнут иссякать.
Клиенты, официанты, и повара — все постоянно пользуются этой базой данных. Отношения между индивидуальным заказом и базой данных о продуктах не обязательно должны принадлежать схеме данных, определенных в базе данных заказов или в базе данных продуктов. Напротив, они являются дополнениями, определяемыми содержанием заказов.
Именно XML обеспечивает структурное представление данных. Вот фрагмент кода, который поможет пояснить это:
<MEAL><ENTREE>Chicken Cordon Bleu</ENTREE></MEAL>
Здесь: Meal — еда, Entree — основное блюдо за обедом, Chicken Cordon Bleu — цыпленок "кордон бле".
Здесь тег <ENTREE> служит не столько для того, чтобы отделить информацию об основном блюде от всей записи о еде, а скорее чтобы указать на то, что это не только часть еды, но основная часть заказанного обеда. Если управляющий захочет посмотреть полный список еды, которая была заказана, он сможет это сделать. Поскольку есть люди, которые довольствуются только десертом, он может также вместо списка еды просмотреть информацию об основных блюдах. Клиенты могут сами осуществлять поиск в базе данных, чтобы узнать, например, как часто заказывали "кордон бле", и если эти заказы были удовлетворены, то прочитать комментарии об этом блюде.
Этот пример подходит для индустрии продуктов и напитков, но что если пользователь хочет применить XML для описания и отслеживания медицинских данных, например, назначений? Поскольку XML позволяет создавать собственные элементы, отвечающие конкретным нуждам, то вполне можно определить элементы, представляющие такие понятия, как дозировка, общие названия лекарств, имена докторов и пациентов и т. д. XML позволяет создавать документы, содержащие термины и определения, в соответствии с конкретными пожеланиями пользователей. Спецификации, которые применяются для описания документов, можно помещать в описание типа документа (Document Type Definition, DTD) — отдельный документ, устанавливающий структуру XML-документа. DTD можно поместить непосредственно в сам документ.
Поскольку сами данные отделены от информации об их представлении, одни и те же данные XML (будь то кулинарное меню или назначение врача) могут быть представлены различным образом на экранах компьютеров пользователей. Они могут быть отображены также на экране устройства, умещающегося в руке. Сам по себе XML-документ не указывает, будет ли, и каким образом, информация отображена на экране. XML-документ содержит лишь данные. С помощью механизма таблиц стилей HTML отображает данные. Как Web-сервер, так и браузер управляют преобразованием XML-данных в формат HTML. К тому же данные XML могут обновляться автоматически, без обновления всей страницы в целом. Такое фрагментарное обновление XML делает HTML-страницы более эффективными и динамичными.
<< назад | содержание | вперед >>